package com.bulk.generic;

import lombok.SneakyThrows;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

/**
 * 泛型相关测试
 *
 * @author 散装java
 * @date 2022-11-24
 */
@SuppressWarnings("all")
public class GenericTest {
    @SneakyThrows
    public static void main(String[] args) {
        List<String> stringList = new ArrayList<>();
        List<Integer> integerList = new ArrayList<>();
        integerList.add(1);
        // 这里的输出 其实 true
        System.out.println(stringList.getClass() == integerList.getClass());
        System.out.println(stringList.getClass());
        System.out.println(integerList.getClass());
        // 通过反射来调用
        Method method = integerList.getClass().getDeclaredMethod("add", Object.class);
        method.invoke(integerList, "散装java");
        System.out.println(integerList.toString());
    }
    public void method(List<Integer> list){

    }
    // 如果两个方法接收的都是list 而泛型不同，则不会进行重载
    // 会出现 'method(List<Integer>)' clashes with 'method(List<String>)'; both methods have same erasure
//    public void method(List<String> list){
//
//    }
}
